﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using App_Code;

public partial class cart : System.Web.UI.Page
{
    dulieuDataContext db = new dulieuDataContext();
    protected User oUser = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        oUser = (User)Session["user"];
        if (!IsPostBack)
        {
            var cart = (Cart)Session["cart"];
            if (cart != null)
            {
                grdData.DataSource = cart.ToDataTable();
                grdData.DataBind();
                LB_Sum.Text = string.Format("{0:N0}", TongTien());
            }
        }
        else
        {
            var cart = (Cart)Session["cart"];
            if (cart != null)
            {
                //rpt_gio_hang.DataSource = cart.ToDataTable();
                //rpt_gio_hang.DataBind();
            }

        }
        LoadUserInfo();
    }

    private int TongTien()
    {
        var cart = (Cart)Session["cart"];
        int sum = 0;
        if (cart != null)
        {
            var data = cart.ToDataTable();
            if (data.Rows.Count > 0)
            {
                foreach (System.Data.DataRow row in data.Rows)
                {
                    sum += Convert.ToInt32(row["summoney"]);
                }
            }
        }
        return sum;
    }

    private void LoadUserInfo()
    {
        if (oUser != null)
        {
            txthoten.Text = oUser.fullname;
            txtdienthoai.Text = oUser.mobile;
            txtemail.Text = oUser.Email;
            txtdiachi.Text = oUser.address;
        }
    }

    protected void DeleteCart(object s, RepeaterCommandEventArgs e) // xóa giỏ hàng
    {
        var cart = (Cart)Session["cart"];
        if (e.CommandName == "delete")
        {
            var lblid = (Label)e.Item.FindControl("lblid");

            cart.RemoveItem(lblid.Text);
            grdData.DataSource = cart.ToDataTable();
            grdData.DataBind();
            Session["cart"] = cart;
        }


        else if (e.CommandName == "edit")
        {
            var lblid = (Label)e.Item.FindControl("lblid");
            var txtsoluong = (TextBox)e.Item.FindControl("txtsoluong");

            cart.UpdatePro(lblid.Text, Convert.ToInt16(txtsoluong.Text));
            //rpt_gio_hang.DataSource = cart.ToDataTable();
            //rpt_gio_hang.DataBind();
        }

        LB_Sum.Text = string.Format("{0:N0}", TongTien());
    }

    protected void cmdOption_Click(object sender, System.Web.UI.WebControls.CommandEventArgs e) //tiep tuc mua hang
    {
        string opt = e.CommandName;
        string id = (string)e.CommandArgument;
        int i = int.Parse(id);
        // string stidpr = Convert.ChangeType(grdData.Rows[i].FindControl("lblidpr"), Label).;
        Label la = (Label)(grdData.Rows[i].FindControl("lblidpr"));

        // Neu la sua gio hang
        if (opt.Equals("CapNhat"))
        {
            TextBox t = (TextBox)(grdData.Rows[i].FindControl("txtSoLuong"));
            int sl = Convert.ToInt32(t.Text);
            string idpr = la.Text;
            Cart cart = (Cart)(Session["cart"]);
            cart.UpdatePro(idpr, sl);
            grdData.DataSource = cart.ToDataTable();
            grdData.DataBind();
            //lblTongTien.Text = "Tổng cộng " + LIB.GetFormatMoney((Object)cart.GetTotalPrice(), ",") + " VNĐ <br>";
            Session["cart"] = cart;
        }
        else if (opt.Equals("Xoa"))
        {

            string idpr = la.Text;
            Cart cart = (Cart)Session["cart"];
            cart.RemoveItem(idpr);
            grdData.DataSource = cart.ToDataTable();
            grdData.DataBind();

            //lblThongBao.Text = "Giỏ hàng có: " + cart.GetTotalPro() + " mặt hàng <b>";
            //lblTongTien.Text = "Tổng cộng " + LIB.GetFormatMoney((Object)cart.GetTotalPrice(), ",") + " VNĐ<br>";
            Session["cart"] = cart;
        }
        LB_Sum.Text = string.Format("{0:N0}", TongTien());
    }
    protected void Unnamed2_Click(object sender, EventArgs e) //xóa đơn hàng
    {
        var cart = (Cart)Session["cart"];
        cart.ClearAll();
        grdData.DataSource = cart.ToDataTable();
        grdData.DataBind();
    }
    protected void Unnamed3_Click(object sender, EventArgs e)
    {
        //    var cart = (Cart)Session["cart"];
        //    foreach (RepeaterItem item in rpt_gio_hang.Items)
        //    {
        //        var txtsoluong = (TextBox)item.FindControl("txtsoluong");
        //        var lblid = (Label)item.FindControl("lblid");
        //        var id = lblid.Text;
        //        cart.UpdatePro(id,Convert.ToInt32(txtsoluong.Text));

        //    }
        //rpt_gio_hang.DataSource = cart.ToDataTable();
        //rpt_gio_hang.DataBind();
        //lbltongtien.Text = cart.GetTotalPro().ToString();
        //lblthanhtien.Text = cart.GetTotalPrice().ToString();
    }

    protected void Unnamed3_Click1(object sender, EventArgs e) // dat hang
    {
        int iTong = TongTien();
        if (oUser.VND < iTong)
        {
            Response.Write("<SCRIPT language='JavaScript'>alert('Bạn không đủ tiền để nhận hàng\n vui lòng nạp thêm tiền vào tai khoản');</SCRIPT> ");
            lblthongbao.Text = "Bạn không đủ tiền để nhận hàng, vui lòng <a href='/ScratchCard.aspx'>nạp tiền</a> vào tài khoản!";
            return;
        }

        var cart = (Cart)(Session["cart"]);
        int quantity;
        double price;
        string idpr;
        var address = txtdiachi.Text;
        var date = DateTime.Now;
        int orderID = 0;// = (from o in db.Order1s select o.Order_ID).Max();
        var ordlist = from o in db.Orders orderby o.Order_ID descending select o;
        if (ordlist.ToList().Count != 0)
            orderID = ordlist.ToList()[0].Order_ID + 1;

        var order = new Order()
        {
            Order_ID = orderID,
            Name = txthoten.Text,
            Mobile = txtdienthoai.Text,
            Address = txtdiachi.Text,
            Email = txtemail.Text,
            Comment = txtnoidung.Text,
            CreateTime = date
        };

        db.Orders.InsertOnSubmit(order);

        db.Orders.InsertOnSubmit(order);

        db.SubmitChanges();
        for (int i = 0; i < cart.GetTotalPro(); i++)
        {
            idpr = cart.GetIdpr(i);
            price = cart.GetPrice(idpr);
            quantity = cart.GetQuantity(i);
            var orderDetail = new OrderDetail() { Order_ID = orderID, ProductID = Convert.ToDecimal(idpr), PriceOnline = price, Quantity = quantity };
            db.OrderDetails.InsertOnSubmit(orderDetail);
            db.SubmitChanges();
        }

        var NewUsers = db.Users.SingleOrDefault(o => o.ID == oUser.ID);
        if (NewUsers != null)
        {
            NewUsers.VND -= iTong;
            db.SubmitChanges();
            Session["user"] = NewUsers;
        }

        //lblthongbao.Text = "Đã mua hàng thành công!";
        Session["cart"] = null;
        Response.Write(string.Format("<SCRIPT language='JavaScript'>alert('Bạn đã đặt hàng thành công, tài khoản của bạn đã được trừ đi {0:N0}');window.location.href='/';</SCRIPT>", iTong));

    }

    protected void BT_Dathang_Click(object sender, EventArgs e)
    {

    }
}